package com.shrct.businessprocess.product;

import com.shrct.businessprocess.organization.RCEnterprise;
import com.shrct.businessprocess.product.RCIdentifiableNormalProductEntryEvent;
import com.shrct.businessprocess.product.RCIdentifiableNormalProductEntryStatus;
import com.shrct.businessprocess.product.RCIdentifiableProductEntry;
import com.shrct.businessprocess.product.RCProductMetaType;
import com.shrct.businessprocess.product.impl.RCIdentifiableNormalProductEntryImpl;
import com.shrct.businessprocess.product.proxy.RCIdentifiableNormalProductEntryProxy;
import com.shrct.businessprocess.purchase.RCPurchaseOrderItem;
import edu.fudan.mylang.pf.EntityImplementation;
import java.util.Collection;

@EntityImplementation(implementBy = RCIdentifiableNormalProductEntryImpl.class)
public interface RCIdentifiableNormalProductEntry extends RCIdentifiableProductEntry {
  public abstract Collection<RCIdentifiableNormalProductEntryEvent> getEvents();
  
  public abstract RCIdentifiableNormalProductEntry removeFromEvents(final RCIdentifiableNormalProductEntryEvent rCIdentifiableNormalProductEntryEvent);
  
  public abstract RCIdentifiableNormalProductEntry removeAllEvents();
  
  public abstract RCProductMetaType getProductMetaType();
  
  public abstract RCIdentifiableNormalProductEntryStatus getStatus();
  
  public abstract void start();
  
  public abstract void _inStock(final RCPurchaseOrderItem orderItem);
  
  public abstract void _deliver(final RCEnterprise enterprise);
  
  public abstract void _cancelInStock();
  
  public abstract void _return();
  
  public abstract Boolean isCreated();
  
  public abstract Boolean isInStocking();
  
  public abstract Boolean isDelivered();
  
  public abstract RCIdentifiableNormalProductEntryProxy toProxy();
}
